package LC;

/**
 * https://leetcode.com/problems/compare-version-numbers/description/
 * Compare two version numbers version1 and version2.
 * If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.
 * You may assume that the version strings are non-empty and contain only digits and the . character.
 * The . character does not represent a decimal point and is used to separate number sequences.
 * For instance, 2.5 is not "two and a half" or "half way to version three",
 * it is the fifth second-level revision of the second first-level revision.
 * Here is an example of version numbers ordering:
 * 0.1 < 1.1 < 1.2 < 13.37
 */
public class LC_165_CompareVersionNumbers_String {
    public static void main(String[] args) {
        System.out.println(Solution.compareVersion("2.1.04", "2.1.03"));
    }

    static class Solution {
        static int compareVersion(String version1, String version2) {
            String[] ver1 = version1.split("\\.");
            String[] ver2 = version2.split("\\.");
            int len1 = ver1.length;
            int len2 = ver2.length;
            int len = 0;
            if (len2 <= len1) len = len2;
            else len = len1;
            int num1;
            int num2;
            int i = 0;
            while (i < len) {
                num1 = Integer.valueOf(ver1[i]);
                num2 = Integer.valueOf(ver2[i]);
                if (num1 == num2) i++;
                else if (num1 < num2) return -1;
                else return 1;
            }
            while (len1 > i) if (Integer.valueOf(ver1[i++]) != 0) return 1;
            i = len;
            while (len2 > i) if (Integer.valueOf(ver2[i++]) != 0) return -1;
            return 0;
        }
    }
}